<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width,user-scalable=no"/>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
    <link rel="shortcut icon" href="../static/favicon.ico" th:href="@{/favicon.ico}"/>

    <title>authorization_code . spring-oauth-client</title>

    <th:block th:insert="~{fragments/main::header-css}"/>
</head>
<body ng-app>
<div class="container">
    <a th:href="@{/}">Home</a>

    <h2>authorization_code
        <small>用 'access_token' 去访问 spring-oauth-server 的API</small>
    </h2>
    <br/>


    <div class="panel panel-default">
        <div class="panel-heading">步骤3: <code>用 'access_token' 去访问 spring-oauth-server 的API</code></div>
        <div class="panel-body">
            <dl class="dl-horizontal">
                <dt>access_token</dt>
                <dd><textarea rows="5" readonly class="form-control">[[${accessTokenDto.accessToken}]]</textarea></dd>
                <dt>id_token</dt>
                <dd><textarea rows="5" readonly class="form-control">[[${accessTokenDto.idToken}]]</textarea></dd>
                <dt>token_type</dt>
                <dd><code>[[${accessTokenDto.tokenType}]]</code></dd>
                <dt>refresh_token</dt>
                <dd><textarea rows="2" readonly class="form-control">[[${accessTokenDto.refreshToken}]]</textarea></dd>
                <dt>scope</dt>
                <dd><code>[[${accessTokenDto.scope}]]</code></dd>
                <dt>expires_in</dt>
                <dd><code>[[${accessTokenDto.expiresIn}]]</code></dd>
            </dl>
            <hr/>
            <p>
                获取access_token成功, 现在可以访问spring-oauth-server资源了, 以下提供两种方式去访问spring-oauth-server资源(或API).
            </p>
            <ul>
                <li>
                    <strong>方式1</strong> 调用本地的接口,由后台去向服务器获取资源并进行处理(如将JSON数据转化成对象), 通过页面展示信息
                    <br/>
                    <form th:action="@{/userinfo}">
                        <input type="hidden" name="access_token" th:value="${accessTokenDto.accessToken}"/>
                        <button type="submit" class="btn btn-link">OAuth Server 用户信息</button>
                    </form>
                </li>
                <li>
                    <p><strong>方式2</strong> 直接通过access_token去访问服务器的资源(该方式将直接获取JSON数据)</p>
                    <p>
                        spring-oauth-server中提供了 /userinfo API, 完整URL: <code th:text="${userinfoUrl}"></code>
                    </p>
                    可在代码中使用HttpClient去调用此API获取JSON数据, 以下是cURL的示例:
                    <pre>curl --location '[[${userinfoUrl}]]' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer [[${accessTokenDto.accessToken}]]' \
</pre>
                </li>
                <li>...</li>
            </ul>
            <p class="help-block">
                <em class="glyphicon glyphicon-info-sign"></em> 至于使用哪一种方式, 在实际中请根据具体的需求或服务器资源提供的访问方式去选择
            </p>
        </div>
    </div>

    <div th:replace="~{fragments/main :: footer}"/>
</div>
</body>
</html>